1. Field of the Invention
The present invention relates generally to computer software. More particularly, the present invention relates to methods and apparatus for selecting multicast data transmitted in broadcast streams.
2. Description of Related Art
The digital television revolution is one of the most significant events in the history of broadcast television. With the advent of digital television, high speed data transfer is possible via satellite, cable and terrestrial television channels. Digital television offers users more channels as well as significantly improved video and audio quality. Most importantly, digital television ushers in the age of true interactive television. For instance, digital receivers will be able to offer users a variety of enhanced services, from simple interactive quiz shows, to internet, and a mix of television and web-type content. As the market for digital television grows, content developers are looking for a feature-rich, cost-effective, and reliable software platform upon which to build the next generation of interactive television services such as Electronic Programming Guides, Video-On-Demand, and Enhanced Broadcasting.
Java is a leading commercial object-oriented language designed as a portable language that can run on any compatible device that supports the JAVA™ PLATFORM. For instance, Java is incorporated into all major Web browsers. Thus, Java runs on any web-enabled computer via that computer's Web browser. As such, Java offers great promise as the software platform for set-top boxes and digital television.
In object-oriented programming, code and data are merged into objects. Each object is defined via its class, which determines the properties and behavior of an object. In other words, objects are individual instances of a class.
In an interactive digital television environment, it will be common to receive data from multiple sources. For instance, a television program (i.e., service) received by a particular channel might consist of audio, video as well as other data (e.g. IP data streams). With the advent of digital television, it would be desirable if the data received by a television receiver could include data from the Internet and therefore conform to the Internet Protocol (IP). Moreover, it would be desirable if each channel could receive data from multiple sources.
When a television channel broadcasts digital data to viewers, it is impossible to address digital data to each viewer individually (e.g., through a single address). Thus, in order to send digital data to multiple television viewers simultaneously, multicast addressing must be used. However, no central repository or mechanism exists to verify that the same multicast address is not used by multiple sources (e.g., channels). It is therefore impossible to distinguish data streams by the associated multicast address. Moreover, it would be desirable to transmit data received from other sources such as those available on the Internet on two different channels. It is therefore possible that the data received by these multiple sources may conflict. This is particularly important since picture-in-picture capability is available in most televisions. As a result, it is possible that conflicting data may be received by multiple channels that are being simultaneously displayed via a picture-in-picture option. Thus, conflicting data may be provided to a single channel through multiple data streams or to multiple channels through a single data stream received by each of the channels. In either case, when this data is ultimately provided to one or more television channels, it would be undesirable if this conflicting data were broadcast to television viewers via the wrong television channel or presented in an incorrect manner by a television channel.
In view of the above, it would be beneficial if a mechanism for unambiguously identifying and selecting one of the data streams associated with a particular channel could be provided. Moreover, it would be desirable if such a mechanism were designed to identify, select, and read a multicast IP data stream transmitted in a broadcast stream, even where multiple data streams are associated with the same multicast address.